
#ifndef __GUI_CONTROLWIN32_HPP__
#define __GUI_CONTROLWIN32_HPP__

#include "ControlImpl.hpp"

#include <map>
#include <Windows.h>

namespace Gui
{
    class ControlWin32 : public virtual ControlImpl
    {
    private:
		static std::map<HWND, ControlWin32*> s_mapControls;

    public:
        static void             AddControl      (HWND hWnd, ControlWin32* Ctrl);
        static ControlWin32*    GetControl      (HWND hWnd);
        static void             RemoveControl   (HWND hWnd);
    
	protected:
		//Manejador de la ventana
		HWND m_hWnd;

    public:
        ControlWin32();
        virtual ~ControlWin32() = 0;
        
		virtual void            PropertySet_Text        (const std::string&);
		virtual void            PropertySet_Position    (const Vector2<int>&);
		virtual void            PropertySet_Size        (const Size2<int>&);
		virtual void            PropertySet_Visible     (const bool&);

		virtual std::string     PropertyGet_Text        ();
		virtual Vector2<int>    PropertyGet_Position    ();
		virtual Size2<int>      PropertyGet_Size        ();
		virtual bool            PropertyGet_Visible     ();
		
		HWND GetHWND() const;
    };
}

#endif  //__GUI_CONTROLWIN32_HPP__
